I am planning to explore MIMIC data, to understand the trend and prevalence of chronic diseases in the presence of various physiological conditions amongst ICU admitted patients. Chronic Heart Failure (CHF) presents a significant challenge in healthcare, requiring a nuanced understanding of prognosis to tailor effective patient care. Typically, individuals diagnosed with CHF face a survival period of less than a year. However, recent 2023 statistics from the United States indicate a more varied picture, with certain studies suggesting an average survival of up to 5 years post-diagnosis. This discrepancy underscores the need for precise prognostic tools and individualized care plans to improve the quality of life for CHF patients.
To gain insights into the factors influencing CHF prognosis, my study delves into the Multiparameter Intelligent Monitoring in Intensive Care II (MIMIC-II) database. This publicly available resource for intensive care research enables a comprehensive analysis, incorporating variables such as age groups and SAPS scores. By exploring these dimensions, my aim is to contribute valuable information that can guide healthcare professionals in refining their prognostic assessments and, ultimately, enhancing patient outcomes.
This project focuses on understanding and predicting the prognosis of Chronic Heart Failure (CHF) to improve patient care. The background research reveals a typical survival period of less than a year for CHF patients.Utilizing the Multiparameter Intelligent Monitoring in Intensive Care II (MIMIC-II) database, the study incorporates key factors such as age groups and SAPS scores to establish correlations with CHF mortality rates. The project aims to provide valuable insights into the multifaceted aspects of CHF prognosis, aiding healthcare professionals in refining their assessments and optimizing care plans. Through this, I anticipate contributing to an improved understanding of CHF and enhanced patient care strategies.
Dataset This dataset was created for the purpose of a case study in the book: Secondary Analysis of Electronic Health Records, published by Springer in 2016. The dataset is derived from MIMIC-II, the publicly-accessible critical care database. The dataset (full_cohort_data.csv) is a comma-separated value file that includes a header with descriptive variable names. The main purpose of the dataset was to list the physilogical factors and intensive care parameters for a critical patient in a Hospital.
The dataset contains 1776 rows (each patient) and 46 columns (physiological and anatomical factors).
To Access the dataset Clinical data from the MIMIC-II database for a case study on indwelling arterial catheters. https://physionet.org/content/mimic2-iaccd/1.0/ The dataset in question was used throughout Chapter 16 (Data Analysis) by Raffa J. et al. to investigate the effectiveness of indwelling arterial catheters in hemodynamically stable patients with respiratory failure for mortality outcomes.
Primary Usage of the Dataset MIMIC-II provides a diverse array of patient data, including demographics, vital signs, and laboratory results, offering a comprehensive foundation for exploring various facets of intensive care research. Its extensive scope and detailed information make it a valuable tool for uncovering insights into critical care outcomes and refining healthcare practices. This dataset walks us through a meticulous examination of the impact of indwelling arterial catheters (IAC) on 28-day mortality within the intensive care unit (ICU), focusing on patients subjected to mechanical ventilation during their initial day of ICU admission.
Data Glossary SAPS score: Estimates the probability of mortality for ICU patients on admission. The SAPS III Admission Scores help sort patients based on how serious their condition is expected to be. This scoring system looks at things like the patient’s health before coming to the ICU, the reasons for their ICU admission, and how messed up their body functions are when they get to the ICU. By using this system, doctors can quickly figure out the best way to care for each patient, aiming to improve their well-being and satisfaction.
SOFA score: The Sequential Organ Failure Assessment (SOFA) score is a scoring system that assesses the performance of several organ systems in the body (neurologic, blood, liver, kidney, and blood pressure/hemodynamics).
A glimpse of datset 46 columns: Each column is a physiological factor for each patient amongst 1776 patients in the dataset.
Most of the columns seem to contain either integer or float values. Continuous data values make it easier for analysis. Descriptive Statistics:- Count: Some values are missing from various columns, as count varies in each columns Mean: age is 54, SAPS score is 14, SOFA score 5.8 Min & max: reveals the extreme values for various physiological factors, like for platelet 7 (min), 988 (max) The quantiles: if plotted will boxplot will help us determining outliers for each of the physiological factors.
Strengths and Weaknesses of the Dataset Strengths: - Reliable dataset – MIMIC is reputed and open data source for medical data - Extensive – incorporating many attributes (~46 columns) - Meaningfulness - Data dictionary is self-explanatory - Completeness – Less missing values Weakness: - Less instances – 1776 rows depicting 1776 patients - Validity – source is unknown, open-source data set and can be accessed by everyone
The study would help us to have an idea on how various physiological or anatomical factors impact the prevalence of chronic diseases to overall affect the SAPS score of the patient.
P-Population The population is the patients requiring mechanical ventilation who did not require vasopressors or have a diagnosis of sepsis were identified, and the primary outcome was 28-day mortality. MIMIC data, represents population with SAPS score between ‘5-15’ identifying risk of mortality of the patient in the ICU based on the severity of the disease condition.
I-Intervention or Exposure Variable Amongst various chronic diseases, we focus on ‘Congestive heart failure (chf_flg)’ is a binary variable where 0 indicates the negative outcome and 1 indicates the positive outcome.
C-Comparison I want to look at two groups of patients: one with congestive heart failure and another without congestive heart failure. When I checked the data, I noticed that congestive heart failure and chronic renal disease show correlation of 0.25 with Mortality. The connection is stronger compared to other chronic factors. So, I decided to focus on congestive heart failure as the major factor of this study and chronic kidney disease as another variable of focus.
O-Outcome Variable “censor_flg” is the outcome variable which indicates ‘censored or death’. It is a binary variable indicative of death when equal to 0 and indicative of censored when equal to 1. Also, because the SAPS score is an indication of mortality, hence it was more relevant to choose mortality as an outcome variable.
## [1] 0
library(ggplot2)
ggplot(without_conf, aes(wbc_first, icu_los_day)) +
stat_bin2d(bins=20) +
labs(title = "2D Histogram of WBC count vs ICU days", x = "WBC Count", y = "Number of days in ICU") Result Interpretation: - Through initial data exploration and visualization in our MIMIC dataset analysis, it became evident that elevated White Blood Cell (WBC) counts, associated with immunity, are linked to shorter ICU stays.
library(corrplot)
# Correlation plot
corr_conf <- cor(without_conf[1:10])
library(corrplot)
# Customizing the correlation plot
corrplot(corr_conf, type = "upper", tl.pos = "td",
method = "circle", tl.cex = 0.5, tl.col = 'black',
order = "hclust", diag = FALSE, mar = c(1, 1, 0, 1),
col = colorRampPalette(c("blue", "white", "red"))(100),
addCoef.col = "black", number.cex = 0.5,
cl.lim = c(-1, 1), # Set the color scale limits
title = "Correlation Plot") # Add a titleResult Interpretation: - Utilizing a correlational plot in our MIMIC dataset analysis, we aimed to identify the variable most strongly linked to the duration of ICU stays.
Result Interpretation: - The correlational plot provided valuable insights, revealing a strong connection between the duration of ICU stays and the length of hospitalization.
Subsequently, a 3D density plot was generated to explore the relationship between age, mortality, and the lengths of stay in both the ICU and hospital. Notably, “alive” patients are represented by green dots, while “dead” patients are denoted by blue dots.
Findings from the plot indicate that individuals aged over 80 with chronic diseases tend to have shorter stays in both the hospital and ICU, coupled with a higher likelihood of mortality. On the other hand, patients in the 20 to 50 age group admitted to the ICU exhibit varying lengths of stay, influencing their chances of survival.
Result Interpretation: - After categorizing the dataset into age groups below and above 60, considering the presence or absence of heart disease, our analysis unveiled higher mortality rates across the board, particularly evident in the age group above 60, especially among individuals with heart disease.
## K-means clustering with 2 clusters of sizes 629, 127
##
## Cluster means:
## gender_num sapsi_first chf_flg censor_flg renal_flg wbc_first hgb_first
## 1 0.5087440 17.82035 0.1701113 0.5755167 0.05405405 12.37587 11.93704
## 2 0.5984252 17.69291 0.1574803 0.6771654 0.04724409 12.67535 12.26693
## icu_los_day hospital_los_day
## 1 3.153307 6.510334
## 2 9.254094 22.952756
##
## Clustering vector:
## [1] 1 1 1 1 2 2 1 1 1 1 2 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1
## [38] 2 2 2 1 1 1 1 1 2 2 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1
## [75] 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [112] 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 2 2 1 1 1 1 1 1 2
## [149] 2 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [186] 2 1 1 2 1 1 1 1 1 2 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 2 2 1 1 2
## [223] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 1 2 1
## [260] 1 1 1 1 1 1 2 1 2 1 2 1 1 1 1 2 1 1 1 1 1 1 2 1 1 1 2 1 1 1 2 1 1 2 1 1 1
## [297] 1 1 2 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1
## [334] 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 2 1 1
## [371] 1 1 1 1 2 2 1 2 1 1 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 1 1 1
## [408] 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 2 1 1
## [445] 2 1 2 1 1 1 1 1 1 1 1 1 1 1 2 2 1 2 1 2 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 2
## [482] 1 1 2 1 1 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 2 2 2 1 1 2 2
## [519] 1 1 1 2 1 2 1 1 1 1 2 1 1 1 1 2 1 1 1 1 1 1 2 2 1 1 2 1 1 2 1 1 1 1 2 2 2
## [556] 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 1
## [593] 1 1 1 1 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1
## [630] 1 1 1 1 1 1 2 1 1 2 1 1 1 1 1 1 1 2 1 1 2 1 1 1 2 1 1 1 1 2 2 1 1 1 1 1 1
## [667] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 2 1 1 1 2 1 1 1 1 1 1 2 2
## [704] 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 2 1 2 2 1 2
## [741] 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2
##
## Within cluster sum of squares by cluster:
## [1] 54740.37 27115.97
## (between_SS / total_SS = 28.4 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
## List of 1
## $ plot.title:List of 11
## ..$ family : NULL
## ..$ face : NULL
## ..$ colour : NULL
## ..$ size : NULL
## ..$ hjust : num 0.5
## ..$ vjust : NULL
## ..$ angle : NULL
## ..$ lineheight : NULL
## ..$ margin : NULL
## ..$ debug : NULL
## ..$ inherit.blank: logi FALSE
## ..- attr(*, "class")= chr [1:2] "element_text" "element"
## - attr(*, "class")= chr [1:2] "theme" "gg"
## - attr(*, "complete")= logi FALSE
## - attr(*, "validate")= logi TRUE
Result Interpretation: - The bar plot generated by the k-means clustering algorithm illustrates the distribution of data across 1, 2, or 3 clusters. Notably, it suggests that 2 or 3 clusters effectively capture the representation of the data.
A PCA chart typically displays how the data points in a multivariate dataset project onto the principal components.
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8
## Standard deviation 1.378 1.0687 1.0545 1.0031 0.9767 0.9501 0.90159 0.80364
## Proportion of Variance 0.211 0.1269 0.1235 0.1118 0.1060 0.1003 0.09032 0.07176
## Cumulative Proportion 0.211 0.3379 0.4615 0.5733 0.6793 0.7796 0.86988 0.94165
## PC9
## Standard deviation 0.72470
## Proportion of Variance 0.05835
## Cumulative Proportion 1.00000
library(ggbiplot)
# Basic ggbiplot
ggbiplot(without_conf.pca, obs.scale = 1, var.scale = 1, groups = without_conf$GroupingVariable)# Customized ggbiplot with additional parameters
ggbiplot(without_conf.pca,
obs.scale = 1, var.scale = 1,
groups = without_conf$GroupingVariable,
ellipse = TRUE, ellipse.prob = 0.68, # Add ellipses with 68% confidence
circle = TRUE, # Add a unit circle
varname.size = 4, varname.adjust = 1.5, # Adjust size and position of variable names
varname.abbrev = TRUE, # Abbreviate variable names
var.axes = TRUE, # Add arrows for variable axes
labels = rownames(without_conf), # Add labels for data points
label.size = 3, # Adjust size of labels
alpha = 0.5, # Set transparency of points
shape = without_conf$ShapeVariable, # Use different shapes for data points
legend = TRUE, # Display legend
biplot = TRUE, # Display biplot
loadings = "variance", # Show variable loadings as proportion of variance
loadings.label = TRUE, # Show variable names for loadings
loadings.label.size = 3, # Adjust size of loading labels
varname.col = "blue", # Set color for variable names
varname.face = "bold", # Set font weight for variable names
varname.label = TRUE, # Show variable labels
varname.label.size = 3, # Adjust size of variable labels
varname.label.col = "red" # Set color for variable labels
)Result Interpretation: - The score plots reveal how the data is projected along the principal components. Points located farther from the center are likely outliers or represent naturally extreme observations.
## Boruta performed 99 iterations in 1.649661 mins.
## 8 attributes confirmed important: age, agegroup, censor_flg,
## hgb_first, icu_los_day and 3 more;
## 1 attributes confirmed unimportant: gender_num;
## 3 tentative attributes left: chf_flg, heart_failure, hospital_los_day;
Now selected sapsi_first, heart_failure, mortality, using tentative and confirmed important attributes:
## age gender_num chf_flg censor_flg renal_flg wbc_first hgb_first
## [1,] 12.12949 -0.9084812 1.762399 6.906130 4.389413 4.161883 7.152791
## [2,] 13.14845 2.2868219 2.122811 8.523155 4.142409 3.319650 7.362015
## [3,] 11.18096 0.6705264 3.687560 4.390831 4.074064 3.197270 5.621322
## [4,] 12.27479 0.8830721 2.278991 7.654170 5.412227 3.430496 7.397266
## [5,] 12.29947 0.2566831 1.720871 6.827953 7.079582 3.454351 6.018177
## [6,] 11.96974 -0.6589906 2.050596 5.877351 4.497742 2.564088 8.042439
## icu_los_day hospital_los_day agegroup
## [1,] 5.499151 4.8730066 6.538453
## [2,] 3.897263 1.5475419 6.804577
## [3,] 5.478581 0.9876445 6.977166
## [4,] 6.337409 3.7439084 6.493189
## [5,] 4.225862 1.1968753 8.459238
## [6,] 6.070956 0.1418116 8.267406
## Boruta performed 99 iterations in 1.649661 mins.
## Tentatives roughfixed over the last 99 iterations.
## 10 attributes confirmed important: age, agegroup, censor_flg, chf_flg,
## heart_failure and 5 more;
## 2 attributes confirmed unimportant: gender_num, hospital_los_day;
Result Interpretation: - After removing features with infinite importance, we organized the remaining significant features by their median importance. Using plotly, we illustrated these features through boxplots, showcasing their median, quartiles, and minimum and maximum values.
summary(without_conf_n$sapsi_first)## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00000 0.05882 0.11765 0.16464 0.23529 1.00000
## n= 572
##
## node), split, n, loss, yval, (yprob)
## * denotes terminal node
##
## 1) root 572 224 1 (0.3916084 0.6083916)
## 2) age>=0.5790757 325 142 0 (0.5630769 0.4369231)
## 4) age>=0.8433225 64 15 0 (0.7656250 0.2343750)
## 8) icu_los_day>=0.01825741 57 10 0 (0.8245614 0.1754386) *
## 9) icu_los_day< 0.01825741 7 2 1 (0.2857143 0.7142857) *
## 5) age< 0.8433225 261 127 0 (0.5134100 0.4865900)
## 10) age>=0.702679 154 66 0 (0.5714286 0.4285714)
## 20) icu_los_day>=0.3714751 7 0 0 (1.0000000 0.0000000) *
## 21) icu_los_day< 0.3714751 147 66 0 (0.5510204 0.4489796)
## 42) icu_los_day< 0.06381056 62 21 0 (0.6612903 0.3387097) *
## 43) icu_los_day>=0.06381056 85 40 1 (0.4705882 0.5294118)
## 86) icu_los_day>=0.1930586 22 7 0 (0.6818182 0.3181818) *
## 87) icu_los_day< 0.1930586 63 25 1 (0.3968254 0.6031746)
## 174) age< 0.7783392 32 15 1 (0.4687500 0.5312500)
## 348) age>=0.751735 12 3 0 (0.7500000 0.2500000) *
## 349) age< 0.751735 20 6 1 (0.3000000 0.7000000) *
## 175) age>=0.7783392 31 10 1 (0.3225806 0.6774194) *
## 11) age< 0.702679 107 46 1 (0.4299065 0.5700935)
## 22) age< 0.6503991 52 24 0 (0.5384615 0.4615385)
## 44) age>=0.642669 9 0 0 (1.0000000 0.0000000) *
## 45) age< 0.642669 43 19 1 (0.4418605 0.5581395) *
## 23) age>=0.6503991 55 18 1 (0.3272727 0.6727273) *
## 3) age< 0.5790757 247 41 1 (0.1659919 0.8340081) *
Result Interpretation: - We divided the dataset into 75% training data and 25% test data, employing the rpart algorithm to build a classification tree. The plot above illustrates the crucial features utilized by the algorithm for observation classification.
## [1] "Accuracy = 0.374338624338624"
Interpretation & Analysis: - Experimenting with different values of k to train the model revealed that the highest accuracy achieved was 38% for k=28, indicating a relatively low accuracy level. In response, we proceeded to train the dataset using the Logistic Regression algorithm.
## age gender_num sapsi_first chf_flg
## 0.23401548 0.49976343 0.15878730 0.37410439
## censor_flg renal_flg wbc_first hgb_first
## 0.49167711 0.22400212 0.06767688 0.13801630
## icu_los_day hospital_los_day
## 0.13859862 0.08316255
##
## Call:
## glm(formula = censor_flg ~ age + chf_flg + sapsi_first + icu_los_day,
## family = "binomial", data = training)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.4671 -0.9968 0.4035 0.9178 1.8318
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.80406 0.39175 9.710 < 2e-16 ***
## age -4.73250 0.55722 -8.493 < 2e-16 ***
## chf_flg -0.06498 0.25421 -0.256 0.79826
## sapsi_first -1.64142 0.60815 -2.699 0.00695 **
## icu_los_day -1.11898 0.73715 -1.518 0.12902
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 765.86 on 571 degrees of freedom
## Residual deviance: 634.26 on 567 degrees of freedom
## AIC: 644.26
##
## Number of Fisher Scoring iterations: 4
#calculate probability of default for each individual in test dataset
predicted <- predict(lr, testing, type="response")
#calculate AUC
library(pROC)
auc(testing$censor_flg, predicted)## Area under the curve: 0.7146
Result Interpretation: - A greater Area Under the Curve (AUC) signifies enhanced model performance, indicating its proficiency in distinguishing between positive and negative classes. With an AUC of 0.71, this model’s predictions demonstrate moderate accuracy and leave room for improvement.
I experimented with two models – KNN and logistic regression. The logistic regression model emerged as the most suitable fit, with an Area Under the Curve (AUC) of 0.71. This suggests that the model achieved a 71% accuracy rate in predicting mortality, taking into account factors such as age, SAPS score at ICU admission, and the presence or absence of congestive heart failure (chf_flg=1 or chf_flg=0).
For associations and correlations to be scientifically valid, it’s crucial to ensure their reliability. In future analyses of this inquiry, we can enhance the model’s robustness by collecting additional data and devising strategies to select features that truly represent the sample, making the results more meaningful. Following internal validation of the model, it’s advisable to conduct pilot tests in different geographic areas for external validation, addressing any discrepancies before implementing it in real-world scenarios. It’s imperative to disclose regulations preventing the model’s misuse by for-profit agencies, particularly in adjusting insurance premiums based on health conditions, to prevent potential disparities.
[1] American Heart Association. (2022). Kidney Disease & Cardiovascular Disease. Website: https://www.heart.org/en/health-topics/kidney-disease/kidney-disease-and-heart-disease
[2] North Carolina Institute for Public Health. (2015). Chronic Kidney Disease in North Carolina: A Public Health Surveillance Report. Report: https://sph.unc.edu/wp-content/uploads/sites/112/2015/07/nciph_ERIC11.pdf
[3] Hill, A. B. (1965). The Environment and Disease: Association or Causation? Paper: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2126329/
[4] Go, A. S., et al. (2015). Heart Disease and Stroke Statistics—2015 Update. Article: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4589117/
[5] World Health Organization. (2023). Cardiovascular Diseases (CVDs). Fact Sheet: https://www.who.int/news-room/fact-sheets/detail/cardiovascular-diseases-(cvds)
[6] Lim, W. Y., et al. (2013). Ischemic Heart Disease (IHD) Mortality among Chinese and Malays in Singapore: Ethnic Variations Uncovered. Article: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3760015/
[7] Morelli, A., et al. (2005). Effects of Levosimendan on Systemic and Regional Hemodynamics in Septic Myocardial Depression. Article: https://link.springer.com/article/10.1007/s00134-005-2763-5
[8] Mishra, J., et al. (2021). Association Between Anemia and Mortality in Patients With Chronic Heart Failure: A Systematic Review and Meta-Analysis. Article: https://www.nature.com/articles/s41598-021-03397-3.pdf?proof=t+target%3D
[9] Díez-Delhoyo, F., et al. (2021). Heart Failure in Older Adults: A Comprehensive Review from the International Heart Failure Association.Article: https://www.frontiersin.org/articles/10.3389/fcvm.2021.774935/full
[10] Haq, A., et al. (2014). The Simplified Acute Physiology Score III Is Superior to the Simplified Acute Physiology Score II and Acute Physiology and Chronic Health Evaluation II in Predicting Surgical and ICU Mortality in the “Oldest Old”. Article: https://www.hindawi.com/journals/cggr/2014/934852/
[11] Marik, P. E. (2006). Management of the Critically Ill Geriatric Patient. Article: https://journals.lww.com/ccmjournal/Citation/2006/09001/Management_of_the_critically_ill_geriatric_patient.20.aspx
[12] Tang, Y. D., & Katz, S. D. (2006). Anemia in Chronic Heart Failure: Prevalence, Etiology, Clinical Correlates, and Treatment Options.Article: https://www.ahajournals.org/doi/full/10.1161/CIRCULATIONAHA.105.588986
[13] Samaritan Healthcare & Hospice. (2020). End-Stage Heart Failure: What to Expect.Website: https://samaritannj.org/hospice-blog-and-events/hospice-palliative-care-blog/end-stage-heart-failure-what-to-expect/